// 操作数库的对象  db
// 数据库：blog_database
// 数据表：pre_banner

// SELECT  字段
// FROM  数据表
// WHERE  条件
// INSERT  插入
// INTO   数据表
// UPDATE   数据表  更新
// DELETE   删除  
// DELETE FROM 数据表

const db = require("../common/db/index");
// models 目录下的文件负责增删改查
module.exports = {
    detail(id) {
        return new Promise((resolve, reject) => {
            // 编写sql语句 （查询语句）
            const sql = 'SELECT id, banner_title, banner_link, banner_url FROM pre_banner WHERE id = ?';
            // 通过query方法执行sql语句
            db.query(sql, [Number(id)])
                .then(
                    result => {
                        resolve(result)
                    },
                    err => {
                        reject(err)
                    }
                )

        })
    },
    list() {
        return new Promise((resolve, reject) => {
            // 编写sql语句 （查询语句）
            const sql = 'SELECT id, banner_title, banner_link, banner_url FROM pre_banner';
            // 通过query方法执行sql语句
            db.query(sql)
                .then(
                    result => {
                        resolve(result)
                    },
                    err => {
                        reject(err)
                    }
                )

        })
    },
    search(keyword) {
        return new Promise((resolve, reject) => {
            // 编写sql语句（模糊查询）
            const sql = 'SELECT * FROM pre_banner WHERE banner_title LIKE ?';
            db.query(sql, [`%${keyword}%`])
                .then(
                    result => {
                        resolve(result)
                    },
                    err => {
                        reject(err)
                    }
                )
        })
    },
    add(banner_title, banner_link, banner_url) {
        return new Promise((resolve, reject) => {
            // 编写sql语句（插入数据）
            const sql = 'INSERT INTO pre_banner (banner_title, banner_link, banner_url) VALUES (?, ?, ?)';
            db.query(sql, [banner_title, banner_link, banner_url])
                .then(
                    result => {
                        resolve(result)
                    },
                    err => {
                        reject(err)
                    }
                )

        })
    },
    modify(banner_title, banner_link, banner_url, id) {
        return new Promise((resolve, reject) => {
            // 编写sql语句（更新数据）
            const sql = 'UPDATE pre_banner SET banner_title = ?, banner_link = ? , banner_url = ? WHERE id = ?';
            db.query(sql, [banner_title, banner_link, banner_url, id])
                .then(
                    result => {
                        resolve(result)
                    },
                    err => {
                        reject(err)
                    }
                )

        })
    },
    remove(id) {
        return new Promise((resolve, reject) => {
            // 编写sql语句（更新数据）
            // ? 占位符  和[ ]的参数顺序是一一对应的
            const sql = 'DELETE FROM pre_banner WHERE id = ?';
            db.query(sql, [id])
                .then(
                    result => {
                        resolve(result)
                    },
                    err => {
                        reject(err)
                    }
                )

        })
    },
    items(page_num,page_size) {
        return new Promise(async (resolve, reject) => {
            // 编写sql语句 （查询语句）
            // 页码：第几页
            // 数量: 每一页的数量
            // 编写sql语句（更新数据）
            // ? 占位符  和[ ]的参数顺序是一一对应的
            const rows = await db.query(`SELECT count(*) as total FROM pre_banner`);

            // 写法1：
            // const sql = 'SELECT * FROM pre_banner LIMIT ? OFFSET ?';
            // const result = await db.query(sql, [page_num, page_size]);

            // 换种写法
            // 写法2：
            let page_num2= ((parseInt(page_num) - 1) * parseInt(page_size))
            let page_size2= (parseInt(page_size))
            let sql =  `select * from pre_banner limit ${page_num2} , ${page_size2}`
            await db.query(sql)
            .then(
                data=>{
                    resolve({
                        total: rows[0].total,
                        data
                    })
                },
                err=>{
                    reject(err)
                }
            )
            
        })
    }
}